home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / NESTC042.ZIP / README.TXT < prev   
Text File  |  1997-09-22  |  22KB  |  567 lines

  1. =================================================================
  2.  NESticle                                   Version 0.42 (09/19/97)
  3.  by Bloodlust Software
  4. =================================================================
  5.  
  6. Death to the defiler.
  7.  
  8. Do not send any files without asking first.
  9.  
  10. Do not ask about SNESticle (or anything else you want emulated).
  11.  
  12. None of the 'extended' mappers (>15) are supported in NESticle,
  13. and chances are they wont be anytime soon.
  14.  
  15. Two scroll fix options alter the way that nametable writes
  16. are interpreted. This can fix or break some games. I can't figure
  17. out how scrolling is supposed to work in all cases, so
  18. these 'workaround' options were put in to fix a few games.
  19.  
  20. Having the PCM channel enabled will cause static in most games.
  21.  
  22. If you get a corrupt volfile error: -disablelfn 
  23.  
  24. For increased compatibility with all monitors, the default DOS
  25. resolution is 320x200. This means that the bottom 24 lines of
  26. games are cut off unless you switch another resolution (such as
  27. 256x224, 256x256, 320x240 etc).
  28.  
  29. ---------------------
  30.      What it is
  31. ---------------------
  32.  
  33. NESticle is a DOS/Win95 based emulator for the Nintendo
  34. Entertainment System written in C++/Assembly.
  35.  
  36. It is freeware and it is not to be distributed with game
  37. ROMs and it is not to be modified or sold.
  38.  
  39. A majority of the NES technical information used to create this
  40. came from Marat Fayzullin's (fms@freeflight.com) great NES.DOC.
  41.  
  42. Sound information was provided by Y0SHi (yoshi@parodius.com) from
  43. his NES technical document.
  44.  
  45. ---------------------
  46.      Revisions
  47. ---------------------
  48.  
  49. Version 0.42:
  50.  - Support for MMC1 games greater than 512k (DW4)
  51.    Thanks to Matthew Richey 
  52.  - Better LFN detection
  53.  - Fixed I-flag after interrupts
  54.  - Fixed pattern editor in 95 version
  55.  
  56. Version 0.41:
  57.  - '-nothrottle' command line option
  58.  - 6502 speedups
  59.  - Correct sprite priorities (SMB3/PO)
  60.  - Corrected trapbadops
  61.  - Fixed vram corruption on reset
  62.  
  63. Version 0.40:
  64.  - Scroll fix workarounds
  65.  - Fixed soft-resets
  66.  - Rom directory saved
  67.  - Automatic state backuping
  68.  - "Perfect" sound constant
  69.  - Partial grungy PCM channel (only a few games) disabled by default
  70.  - State display
  71.  - Mapper #6 mirroring fix
  72.  - Scanlines in mode 256x256
  73.  - 256x224 made more compatible
  74.  - Completely rewritten 6502 CPU core
  75.  - Added RDTSC and FPUcopy for pentiums
  76.  - Added support for MMC1 ROMs >256k
  77.  - Speed throttle disabling
  78.  - Improved waitvsync
  79.  - GUI enhancement
  80.  - Fixed MMC1 glitch
  81.  - '-nomsgpopup' option added
  82.  - Default DOS res set to 320,200
  83.  - Changed DOS SB sound driver
  84.  - Fixed DOS hardware error handler bug
  85.  - Fixed crash bug with too long descriptions in rom patch files
  86.  
  87. ---------------------
  88.     What it does
  89. ---------------------
  90.  
  91. NESticle emulates the basic NES hardware, along with several of
  92. the memory mapping chips used by various games. 
  93.  
  94. What's emulated:
  95.  
  96.    -6502 CPU
  97.    -PPU
  98.    -VRAM/VROM
  99.    -Horizontal/Vertical mirroring
  100.    -Scrolling
  101.    -8x8 and 8x16 Sprites
  102.    -Dual joypads
  103.    -iNES Memory mappers 0,1,2,3,4  (5,6,7,8,9,11,15 partial)
  104.    -Battery backed RAM
  105.    -Sound emulation
  106.  
  107. Other neat features:
  108.  
  109.    -Multiple save states
  110.    -Joystick/"GrIP" support
  111.    -Network play (Win95 exe only)
  112.    -"Friendly" GUI
  113.    -VESA/DirectDraw support
  114.    -Fullscreen 256x224 VGA mode (DOS only)
  115.    -Save .pcx snapshots
  116.    -Editable pattern tables (CHR/tile/vrom)
  117.    -iNES single file cart format
  118.    -Wave output loggable
  119.    -Editable palette (I dont have the correct colors)
  120.  
  121.  
  122. ---------------------
  123.  What it doesn't do
  124. ---------------------
  125.  
  126. Full PCM channel.
  127.  
  128. GUS support is buggy.
  129.  
  130. ---------------------
  131.   What you get
  132. ---------------------
  133.  
  134.   NESticle.exe     : The 32-bit DOS version
  135.   NEStcl95.exe     : The Win95/NT Directdraw version
  136.   NESticle.pal     : The NES palette (256 colors in RGB format)
  137.   gui.vol          : Extra graphics stuff for the gui
  138.   readme.txt       : This file
  139.  
  140. Note that it does not come with ROMs.
  141. It will never come with ROMs.
  142. And it must never be distributed with ROMs.
  143. Distribute it with ROMs and you die.
  144. Ask me for ROMs and you die.
  145.  
  146.  
  147. ---------------------
  148.   What you need
  149. ---------------------
  150.  
  151. A 486 or Pentium running DOS or Windows 95/NT.
  152.  
  153. The DOS version requires DOS4GW, available separately.
  154.  
  155. For the Windows version you MUST HAVE DirectX Version 3.0.
  156. It's available somewhere on Microsoft's labyrinth of a website.
  157. At least 16MB of memory for the Win95 version.
  158.  
  159. NESticle can take advantage of VESA 2.0 support if it exists.
  160. If it does not exist, NESticle will resort to only the
  161. video modes 320x200, 256x224, 256x240, 256x256.
  162. You need about 8MB of memory for the DOS version.
  163.  
  164. The DOS version currently supports 8-bit or 16-bit Soundblasters
  165. or compatible, or the Gravis Ultrasound. 16-bit preferred, of course.
  166. The Win95 version utilizes DirectSound for digital output.
  167.  
  168. ---------------------
  169.  How to work it
  170. ---------------------
  171.  
  172. Load up a .NES rom from the File/Load ROM.
  173. Reset the rom from CPU/Reset.
  174.  
  175. If you're running in a high-res mode (>320x240), the NES
  176. game screen will appear in a window. You can maximize the window
  177. with the "SQUARE" button in the title bar. You close the window with
  178. the X button.
  179.  
  180. You can toggle the GUI on and off by pressing ESC.
  181.  
  182. You change the input devices from the Settings/RedefineInput menu(s).
  183. No matter what the settings are, Enter/Tab are always Start/Select in order
  184. to accomodate 2 button joysticks. Enter/Tab only work if the game window
  185. has input focus (click on it) or the gui is disabled.
  186.  
  187. F5/F7 saves and loads your games. Essentially it stores the entire NES state
  188. in a state file. Pressing the keyboard keys 0-9 (not the numeric keypad ones)
  189. will change the current state slot for subsequent saves/loads:
  190.    0 = "xxxx.STA"        (xxxx is the rom file name)
  191.    1 = "xxxx.ST1"
  192.    2 = "xxxx.ST2"
  193.      ... etc
  194. The default slot whenever a rom is loaded is 0 (ie "xxxx.STA")
  195. With statebackuping on, when saving, the old state file is renamed to 
  196. 'xxxx.bak'. You'll have to manually rename the backup state file to
  197. use it again.
  198.  
  199. You can record movies with CPU/NES Movie/Record. This will create
  200. a NES Movie file (*.nsm) which contains the NES state along with
  201. recorded input so you can send them to your friends and bore them
  202. to death. CPU/NES Movie/Stop will stop the recording.
  203. Recording takes 2 bytes/frame, 120 bytes/second, 7K/minute,
  204. and 432K per hour (10MB per day). When playing a movie, be sure
  205. the correct ROM is loaded or else things'll get weird. Once the
  206. movie is done playing NES control is relinquished.
  207. One thing to beware, movies recorded with NESticle will not
  208. be compatible with future versions if the emulation core changes.
  209.  
  210. The NSM files are backward compatible with STA files, in other
  211. words, renaming zelda.nsm to zelda.sta will allow you to load the
  212. movie as a normal state file and play from the movie's beginning point.
  213. Additionally, STA files are backward compatible with SAV files,
  214. renaming zelda.sta to zelda.sav will load it as battery backed mem.
  215.  
  216. To edit patterns, View/Pattern tables, then click on a pattern and edit it.
  217. Right clicking on a pattern will change its attribute (palette), to aid
  218. in drawing. If you wish, you can save the changes with File/Write VROM, and the
  219. VROM will be written directly to the .NES file, so beware.
  220.  
  221.  
  222. ---------------------
  223.   ROMS and stuff
  224. ---------------------
  225.  
  226. NESticle currently uses the iNES single file cart format (*.NES).
  227. It will support the pasowing format in the future.
  228. The ROMs must be stored in the same dir as the .exe.
  229.  
  230. Here's a description of a sample cart 'ZELDA' and some possible extensions:
  231.  
  232.  - ZELDA.NES
  233.     The actual ROM/VROM data preceded by a 16-byte header
  234.  
  235.  - ZELDA.HDR
  236.     An alternate 16-byte header file. If NESticle encounters this in the dir
  237.     of the ROM, it will use this header instead of the one present in the
  238.     NES file.
  239.  
  240.  - ZELDA.SAV
  241.     8K file representing the contents of the battery backed memory used
  242.     in some games. This file is automagically saved and loaded as needed.
  243.  
  244.  - ZELDA.ST?
  245.     It's the 'state' file used by saved games.
  246.  
  247.  - ZELDA.NSM
  248.     Recorded NES Movie.
  249.  
  250.  - ZELDA.PAT
  251.     Text file containing ROM patches
  252.  
  253.  
  254. Numerous roms floating around out there have incorrect headers.
  255. Having an incorrect memory mapper type in the header will most likely cause
  256. the game to crash. Having an incorrect mirroring bit will cause the background
  257. to appear jumbled, or split, while scrolling. You can flip the mirroring bit
  258. from the settings menu. If changing the mirroring fixes the game, you can then
  259. write the ROM header as described above.
  260.  
  261.  
  262. ---------------------
  263.    ROM patching
  264. ---------------------
  265.  
  266. I finally deciphered GameGenie codes with some basic info provided
  267. by Benzene of Digital Emutations (demu@wspice.com). No thanks to Galoob.
  268.  
  269. NESticle supports GameGenie codes and general patching of the
  270. CPU ROM address space ($8000-$FFFF).
  271.  
  272. Bring up the ROM patching dialog with F6 or from the CPU menu.
  273. There are two edit fields in the dialog, the Name and the Code.
  274. The Code field is where the actual code goes (eg APZLGG). 
  275. The Name field lets you type in a description of the code (eg Megajump),
  276. if no name is entered then the code string is used as the name.
  277. Once you've filled these in, clicking "Add" (or pressing enter) will 
  278. add it to the list of patches. To activate or deactivate the patch, 
  279. doubleclick on the code name in the listbox or click on "Toggle".
  280. "Remove" deletes the patch completely. "Save" writes all the patches
  281. to the text file <romname>.pat, this file is decribed below.
  282.  
  283. NESticle accepts either GameGenie codes or raw patches.
  284. GameGenie codes can be either 6 or 8 digits and
  285. use the letters:
  286.     A P Z L G I T Y   E O X U K S V N
  287. Deciphering the GameGenie code is a mess and I won't
  288. go into it here. NESticle internally converts them to a raw format.
  289.  
  290. The raw patches have two formats that coorespond to both
  291. types of Game Genie codes:
  292.  
  293.         <$addr>:<$val>          (6 letter GG code)
  294.         <$addr>?<$key>:<$val>   (8 letter GG code)
  295.  
  296. <$addr> is a 15-bit hex address within $8000-$FFFF of 
  297.           the CPU address space (the rom area).
  298. <$val> is the 8-bit hex value to be patched at that address.
  299. <$key> is an 8-bit hex number that MUST be present at that
  300.           ROM location before the patch will be active.
  301.  
  302. Examples:
  303.  10A4:10    patches CPU address $90A4 with the hex value $10.
  304.  05A1?5B:FF patches CPU address $85A1 with the hex value $FF if 
  305.              and only if $85A1 currently contains $5B
  306.  
  307. NESticle can save a .pat file that contains all the patches
  308. created during a game. This file can be modified using a
  309. text editor. Each line of the .pat file looks like this:
  310.  
  311.           [+]<code> [<name>]
  312.  
  313. [+]    if a '+' is prefixed to the code, then it will be automatically
  314.         activated when the game is run
  315. <code> is the patch itself (GG 6/8 or raw format).
  316. <name> is the text description of the code, if no name is supplied
  317.         then the code is used as the name
  318.  
  319. Note: If more than one patch modifies the same address (and have compatible
  320. keys) then only one can be active at once. Activating one will deactivate
  321. the others (ie they are mutually exclusive).
  322.  
  323.  
  324.  
  325. ---------------------
  326.    Input Devices
  327. ---------------------
  328.  
  329. NESticle supports analog joysticks, 4-button gamepads,
  330. the Gravis GrIP gameport and keyboard input.
  331.  
  332. Some general things:
  333.  - There are two input devices, one each for NES controller 1 and 2.
  334.  - Change the input devices with Settings/RedefineInput
  335.  - Enter/Tab will simulate Start/Select on NES controller 1, ONLY when
  336.     the GUI is disabled or the NES game window has input focus (click on it)
  337.  - You can remap the buttons for a joystick input device with the 
  338.     command line option '-remapbut' or from the "Remap buttons" dialog...
  339.     Simply click on the NES button type and then press the joystick button 
  340.     you wish to use. Pressing any key will set the NES button to "None".
  341.  - You can redefine the keys for a Keyboard input device with the 
  342.     Redefine Keys dialog, or with the '-setkey' command line option
  343.  
  344. Under DOS:
  345.  - Joystick 1 or 2 refer to 2-button analog joysticks only!
  346.  - "Gamepad" refers to a 4-button analog joypad (or joystick)
  347.    The default button mapping for "Gamepad" conforms to that
  348.    for a Gravis Gamepad (ie, 0 2 1 3), but can be changed
  349.  - Due to hardware limits, only one 4-button device can be connected
  350.  - You can interactively calibrate the joystick with the "Calibrate" 
  351.    button. Just center and swirl. The joystick thresholds can be also
  352.    set with the '-joythresh' command line option.
  353.  - In order to enable GrIP support, you MUST copy the "grip.gll" file
  354.     to NESticle's startup directory. NESticle will load the driver
  355.     if it finds it and the GrIP devices in slot 1 or 2 can be used.
  356.  
  357. Under Win95:
  358.  - Joystick 1 and 2 refer to joystick device 1 and 2 as defined under
  359.     Win95's Control Panel/Joystick and can be calibrated from there
  360.  - Gamepad refers to joystick device 1 (with the default Gravis Gamepad mapping)
  361.  - Under Win95 there is no practical limit to the number of buttons
  362.     per joystick device, and any can be remapped
  363.  
  364. GrIP support was added via Gravis's SDK, however it doesn't seem to 
  365. work with other devices besides the GrIP Gameport. I dont know why.
  366.  
  367. ---------------------
  368. Command line options
  369. ---------------------
  370.  
  371. DOS & WIN95:
  372. ------------
  373.  
  374. @<filename>     : Parses the file <filename> for command line options
  375.  
  376. -res <xw> <yw>  : Sets the resolution to xw,yw on startup.
  377.                 : Use this if 256x224 doesn't work or you get a
  378.                 : "Unable to init DDraw: invalid mode" error
  379.  
  380. -setinput <num> <type>
  381.                 : Sets input device <num> to <type>
  382.                    ex. '-setinput 1 GRAVIS'
  383. -remapbut <device> <b> <a> <sel> <start>
  384.                 : Remaps buttons for <device>
  385.                 : <device> can be JOY1, JOY2 or GRAVIS
  386.                 : <b>,<a>,<sel>,<start> are the joystick button #'s for each NES button
  387.                 : A setting of '255' will disable the NES button
  388.                 : The old 'swapbut' is now obselete, instead use "-remapbut JOY1 1 0"
  389. -setkey <device> <ul> <u> <ur> <l> <r> <dl> <d> <dr> <b> <a> <sel> <start>
  390.                 : Sets the keyboard scancodes for <device>
  391.                 : <device> can be KEY1 or KEY2
  392. -setjoythresh <num>  <left> <right> <up> <down>
  393.                 : Sets the joystick threshold for analog joystick <num>
  394.                 : left,right,up,down define the joystick's "dead-zone"
  395.  
  396. -waitvsync      : Wait for the vertical sync to draw frames (see Performance)
  397. -hidegui        : Hide GUI on startup
  398. -nomsgpopup     : Disables the last message from popping up on screen
  399.  
  400. -load <rom>     : Load <rom>
  401. -run <rom>      : Load & Run <rom>
  402. -restore <rom>  : Load & Run & Restore state for <rom>
  403.  
  404. -sndrate <rate> : Sets the sound sampling rate (8000-44100) default=22050
  405. -sndblksize <s> : Sets the size of the mixing block (in samples) default=256
  406. -nosound        : Bypasses the initialization of any sound hardware
  407. -force8bit      : Forces 8-bit sound output (even if 16-bit exists)
  408.  
  409. -romdir <dir>   : Sets the startup dir for .NES roms
  410. -savedir <dir>  : Sets the directory for .SAV and .STA files
  411. -pcxdir <dir>   : Sets the directory for saving snapshots
  412. -logdir <dir>   : Sets the directory for logging and debug files
  413. -patchdir <dir> : Sets the directory for .PAT files
  414.  
  415. DOS only:
  416. ---------
  417. -? or -h        : Display command line help
  418. -disablelfn     : Disables long file name support
  419. -novesa         : Don't use VESA extensions
  420. -linear         : Force linear video mode
  421. -banked         : Force banked video mode
  422.  
  423. -sb   <port> <irq> <dma8>  : Forces 8-bit soundblaster settings (ex -sb 220 7 1)
  424. -sb16 <port> <irq> <dma16> : Forces 16-bit soundblaster settings (ex -sb16 220 5 5)
  425.       (if soundblaster settings are not supplied, they will
  426.         be extracted from the BLASTER environment variable,
  427.        GUS settings are extracted from the ULTRASND variable)
  428.  
  429. -rdtsc          : Enable the use of the Pentium RDTSC profiling instruction
  430. -fpucopy        : Use the FPU for mem->vidmem copies (pentium only)
  431.  
  432.  
  433. "NESticle.ini" and "NEStcl95.ini" are two automatically generated
  434. configuration files which are parsed before the command line
  435. itself. You can manually edit the constants in this file if
  436. you wish, but any additional commands or options added to it
  437. will be overwritten the next time you run NESticle.
  438.  
  439. The two files "NESticle.cmd" and "NEStcl95.cmd" are user-editable
  440. files for command line options and will be appended to the
  441. ini files when they are parsed.
  442.  
  443.  
  444. ---------------------
  445.      Netplay
  446. ---------------------
  447.  
  448. Netplay at this point is very preliminary.
  449. It is still quite buggy.
  450.  
  451. Netplay is only available with the Win95 version (using Winsock),
  452. over either the TCP/IP or the IPX protocols.
  453. In the future, the DOS version may support the IPX protocol.
  454.  
  455. One person must start a server (Net/Start server) and select
  456. a protocol to use as well as the port. The person's name
  457. must be entered as well. The opponent must connect to this
  458. server (Net/Connect), and for the TCP/IP protocol he must
  459. supply the server's IP address. Only one person can be
  460. connected to a server at once. Do not try to run more than 
  461. one NESticle server on the same port on the same
  462. network, the results will be unpredictable.
  463.  
  464. After the connection has been made, the connection status 
  465. window may be closed and the connection will remain active. 
  466. Select Net/Disconnect to close the connection.
  467. You can chat with the other player by opening the chat
  468. window with Net/Chatwindow.
  469.  
  470. After you are connected, one person can load up a ROM, and
  471. if the remote player also has the ROM his/her side will
  472. load it as well. If the remote player does not have the
  473. ROM or has an incompatible ROM (ie wrong size) then the
  474. game will abort and an error will appear in the message window.
  475. The person who last loaded the ROM or last reset the ROM
  476. will be player 1. The game is played using each computer's 
  477. input device 1.
  478.  
  479. Now for the complex stuff:
  480. In order for netplay to work at all, both sides need
  481. to be syncronized at all times. This is no problem for a low
  482. latency LAN running over ethernet for example. However this
  483. spells trouble for internet connections. In the connection window,
  484. the ping times of all the nodes are shown. The ping time number
  485. is measured in virtual frames. The NES normally runs at 60 frames
  486. per second, so a ping time of '30' would be about 500ms. The
  487. lower the ping time the better. The bandwidth that NESticle uses 
  488. is negligable, less than 100bytes/sec.
  489.  
  490. Anyway, adjusting the 'vframe latency' number will affect how
  491. lagged each player's input is. It essentially controls
  492. how often game update packets are sent.....
  493. A low vframe latency number will result in a very responsive game
  494. if your network can handle it. A high vframe latency
  495. setting will result in a 'lagged game', but it may be necessary
  496. for high latency connections (such as the internet).
  497. If you have your vframe latency set too low, you will notice that the
  498. game will 'freeze' periodically as it waits for the other computer
  499. to respond. If you have it set too high, your game input will be
  500. severely lagged, but the game will not 'freeze'.
  501.  
  502. The default setting is 5, I highly recommend changing it.
  503. On a LAN, where the connections are fast and reliable, a vframe
  504. latency of about 2 will result in great gameplay and performance.
  505. On the internet, the best setting is about half of your pingtime.
  506. I left the setting adjustable so you can mess with it to see whats
  507. best. As far as internet play goes, personally i don't think
  508. it runs very well, but that's not my fault as much as it is the
  509. internet's and there's nothing I can do about it.
  510.  
  511. Some last things: the vframe latency setting is not adjustable
  512. while in the middle of a game. You must free the ROM, change it,
  513. then reload. Also, save games will not work while connected and
  514. you cannot restore saved states, nor can you apply rom patches.
  515.  
  516.  
  517. ---------------------
  518.      Contact
  519. ---------------------
  520.  
  521. Bloodlust Software
  522. bldlust@parodius.com
  523. http://nesticle.parodius.com/
  524.  
  525. Email me about ROMs and your suffering will be legendary.
  526.  
  527. ---------------------
  528.   Acknowledgements
  529. ---------------------
  530.  
  531. Marat Fayzullin for his priceless NES.DOC and iNES emulator.
  532.  
  533. Y0SHi for taking the time to maintain his 'nestech.doc'
  534.  
  535. Y0SHi, Marat and FanWen for supplying valuable information on NES sound.
  536.  
  537. Additional help by Neill Corlett, if you haven't gotten MGE yet
  538. then you suck: http://www4.ncsu.edu/eos/users/n/nscorlet/mge/
  539.  
  540. Additional info:
  541.  FanWen (yangfanw@ms4.hinet.net)
  542.  Andrew Davie (adavie@comcen.com.au)
  543.  Matthew J Richey (mr6v+@andrew.cmu.edu)
  544.  Benzene (demu@wspice.com)
  545.  Neil Bradley (neil@synthcom.com)
  546.  Benny Boola Hill
  547.  DeceiverX, Loopy, Vectriff, Zophar
  548.  
  549. Scrotum-art and testing by digger.
  550.  
  551.  
  552. ---------------------
  553.      Disclaimer
  554. ---------------------
  555.  
  556. NESticle Copyright 1997 Bloodlust Software
  557. Nintendo Entertainment System (NES) is a registered trademark of Nintendo.
  558. Game Genie is a trademark of Galoob.
  559. Neither Bloodlust Software nor the author are affiliated with Nintendo
  560.  nor advocate the piracy of NES games.
  561. NESticle is freeware and can be distributed freely as long as it is not
  562.  modified and ROMs are not packaged with the program.
  563. When you use this software you do so at your own risk. The author is 
  564.  not responsible for any loss or damage resulting from the use or 
  565.  misuse of this software.
  566. If you do not agree with these terms then NESticle is not for you.
  567.